package com.heima.leetcode.practice;

/**
 * @author 勾新杰
 * @version 1.0
 * @description: leetcode 101 对称二叉树
 * @date 2025/1/9 11:00
 */
public class E101 {

    /**
     * <h3>方法一：递归比较，采用和比较是否是一样的二叉树类似的解法</h3>
     * @param root 根节点
     * @return 是否对称
     */
    public boolean isSymmetric(TreeNode root) {
        return isSymmetric(root.left, root.right);
    }

    /**
     * 递归比较
     * @param l 左节点
     * @param r 右节点
     * @return 是否对称
     */
    private boolean isSymmetric(TreeNode l, TreeNode r) {
        if (l == null && r == null) return true;
        else if (l != null && r != null)
            return l.val == r.val
                    && isSymmetric(l.left, r.right)
                    && isSymmetric(l.right, r.left);
        else return false;
    }
}
